package partion

// ------------------------sliceArr--------------------------------------
// 给定一个数组和一个数字N，把数组内点值分成3部分，小于N的在最左侧，等于N的在中间，大于N的在最右侧
func SliceArr(data *[]int, n int) {
	cnt := len(*data)
	if cnt < 2 {
		return
	}

	l, r := -1, cnt
	for i := 0; i < r; i++ {
		if (*data)[i] < n {
			l++
			(*data)[i], (*data)[l] = (*data)[l], (*data)[i]
		} else if (*data)[i] > n {
			r--
			(*data)[i], (*data)[r] = (*data)[r], (*data)[i]
			i--
		}
	}
}

// ------------------------sliceArr--------------------------------------
